package com.itheima.d4_jdk8_time;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 代替SimpleDateFormat的功能
 *  目标：掌握JDK 8新增的DateTimeFormatter格式化器的用法。（线程安全）
 *  用于时间的格式化和解析
 *
 *  DateTimeFormatter
 * public static DateTimeFormatter ofPattern(时间格式)  获取格式化器对象
 * public String format(时间对象)  格式化时间
 *
 * LocalDateTime
 * public String format(DateTimeFormatter formatter)        格式化时间
 * public static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter)    解析时间
 */
public class Test6_DateTimeFormatter {
    public static void main(String[] args) {
        // 1、创建一个日期时间格式化器对象出来。  public static DateTimeFormatter ofPattern(时间格式)  获取格式化器对象
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

        // 2、对时间进行格式化   public String format(时间对象)  格式化时间
        LocalDateTime now = LocalDateTime.now();
        System.out.println("当前时间: "+now);

        System.out.println("==========formatter.format(now); 正向格式化=============");

        // 正向格式化，拿格式化器来格式化这个LocalDateTime
        String rs = formatter.format(now);
        System.out.println(formatter.format(now));
        System.out.println(rs);

        System.out.println("==========now.format(formatter);反向格式化=============");

        // 3、格式化时间，其实还有一种方案。用LocalDateTime的变量调用fotmat方法，然后接一个格式化器
        String rs2 = now.format(formatter); // 反向格式化
        System.out.println(now.format(formatter));
        System.out.println(rs2);

        System.out.println("=======解析时间======");
        // 4、解析时间：解析时间一般使用LocalDateTime提供的解析方法来解析。
        String dateStr = "2029年12月12日 12:12:11";
        LocalDateTime ldt = LocalDateTime.parse(dateStr, formatter);
        System.out.println("解析时间： "+ldt);
    }
}






